import gradio as gr
from openai import OpenAI

SYSTEM = {"role": "system",
          "content": "你是一个英语翻译官，需要翻译用户输入的内容，不要生成和翻译无关的内容"}

# 持久化聊天记录
history = [SYSTEM]

client = OpenAI(
    api_key="sk-7b4cb6aa21fa442f90bbe851265dd008",
    base_url="https://api.deepseek.com"  # 去掉空格
)

def greet(user_input):
    # 1. 追加用户消息
    history.append({"role": "user", "content": user_input})

    # 2. 超过 10 条时，删除最老的一对 Q&A（保留 SYSTEM）
    while len(history) > 10:
        history.pop(1)  # 删索引 1（最老 user 消息）

    # 3. 请求模型
    completion = client.chat.completions.create(
        model="deepseek-chat",
        messages=history,
        temperature=0.3
    )
    assistant_reply = completion.choices[0].message.content

    # 4. 把助手回复也存进历史
    history.append({"role": "assistant", "content": assistant_reply})

    # 5. 返回当前助手回复
    return assistant_reply

demo = gr.Interface(
    fn=greet,
    inputs=gr.Textbox(lines=2, placeholder="输入要翻译的中文"),
    outputs="text",
    title="中英翻译机器人",
    description="支持多轮对话，自动记忆最近 5 轮（10 条）消息"
)

demo.launch(share=True)